コンパイララッピング

この機能は、使用するコンパイラの指定に環境変数を用いるビルドシステムにおいて使用することができます。以下に例を示します:

CC='gcc-4.7' 
CXX='cl.exe'

この機能は、ファイルとその依存関係をPerforce QACプロジェクトに追加するためのqacliコマンドを、必要なコンパイラ変数に割り当てることによって動作します。これは、makeベースのシステムなど、コンパイルコマンドをエイリアスできる任意のビルドシステムに適用されます。

make CC="qacli project files -P <directory> --compile-command 'gcc -z' --add --ignore-rest"

この場合、qacli は、ビルド時に引数を受ける通常のコンパイラと異なり、引数を--ignore-rest オプションの後に直接指定します。qacli は引数を解析し、ソースファイルのパス、インクルードパ スおよびマクロ定義を検索します。ソースファイルが検出されると、他のデータと共にプロジェクト に追加されます。これが行われるとすぐに、qacli --compile_commandの引数を システムに発行し、通常どおりにファイルをコンパイルします。

qacli project files --add コマンドは、ファイルの追加に失敗した場合に0以外の値を返します。ツールが0以外の値を返した場合でも、通常はビルドは終了するため、これはどんな場合でも好ましい状況ではありません。makeベースのシステムにおいてビルドの終了を防ぐには、コマンドの冒頭にダッシュを付加します。

make CXX='-qacli project files -P <directory> -z g++ --add --' / CC='-qacli project files -P <directory> -z gcc --add --'
--は、 --ignore-restの短縮形として使われています。

-z <command>--compile-command <command>の短縮形として使われています。

コマンドの一部である-z g++は、にコンパイル依存の情報と共に各ファイルを抽出し、コンパイルするように指示します。これは、後のビルドプロセスで必要な成果物をビルドするビルドシステムにおいて必要です。 コンパイルコマンドにスペースが含まれている場合 (例:g++ -Wall)、あるいはシェルが正しく扱えない文字が含まれている場合、コンパイルコマンドをスクリプトまたはバッチファイルに含め、実行可能にする必要があります。 例えば、ファイル compiler_cpp.sh を作成し、以下のコンパイルコマンドをラップすることができます。#!/bin/bash

g++ -Wall "$@"

同様に、C コンパイラ用のファイルを作成したとすると、上で示した makeコマンドの例は以下の ようになります。

make CXX='qacli project files -P <directory> -z compiler_cpp.sh --add --' / CC='qacli project files -P <directory> -z compiler_c.sh --add --'

コンパイララッピングは、コンパイルコマンドの置き換えが可能なビルドシステムにおいて使用することができます。

ビルドプロセスモニタリングの場合と同様に、プロジェクトをビルドの実行前に削除しておく必要があります。